MONITOR TS−1000 ――――――――――――――――――――――――――――――――――――――― I/O 1982年 2月号掲載 MZ−80B マシン語  ”TS−1000” 00000H−014FFH                (08000H−094FFH) 起動方法 IPLから起動 ――――――――――――――――――――――――――――――――――――――― 今回から、MZ−80B用のWICSを発表していきます。 MZ−80B用のWICSにはグラフィック用のコマンド (CIRCLE、PAINTなど)が付加され、 さらに使いやすくなっています。 また、C−DOSを使えば、 ディスクに対しても、ロード、セーブが行なえます。 今回はWICS 80Bを動かすために必要なモニタを発表します。 このモニタはキー入力や画面出力、プリンタ出力などの各種サブルーチン群と メモリ・ダンプなどのモニタ・コマンドからなっています。 ・―――――――――――――――――・ |■■MONITOR■■■■■■■■| |■■TS−1000の特徴■■■■■| ・―――――――――――――――――・ ■MONITOR TS−1000では、  すべてのキャラクタをキーボードから入力できるようにしています。 ■キー入力はすべてのキーにオート・リピートがきくようになっています。 ■[SHIFT LOCK]キーにコントロールキーの機能をアップしてあります。 ■キー入力により、プリンタの出力を切り換えられます。 ■キー入力により、リストの滝登りも可能です。 ■メモリ・ダンブ後は、スクリーン・エディットにて、  メモリ変更ができます。 ■MONITORコールは$0028だけですみます。 ★キー入力時の注意 ■[GRPH]キーを入力した後(グラフィック・モード)  ・―――――――――――――――――――――――――・  | [^]→ [〜]→チェッカー [0]→● [1]→ ̄↓ |  | [HOME]→[H] [CLR] →[C]           |  ・―――――――――――――――――――――――――・ ■グラフィック・モードで、[SHIFT]を押したままで、  カーソル・キーを入力。  [→]→[→] [←]→[←] [↑]→[↑] [↓]→[↓]  以上のキャラクタがキー入力で画面に出力できるようになっています。 ・―――――――――――――――――・ |■■MONITOR■■■■■■■■| |■■TS−1000の機能■■■■■| ・―――――――――――――――――・ MONITORプログラムは、MZ−80Bのハードウェア装置である キーボード、CRTディスプレイ、カセットテープ・デッキ、 タイマ、サウンド発生回路、プリンタなどのI/Oを コントロールするサブルーチンが含まれています。 WICSはこのモニタ・サブルーチンを使うことによって コンパクトになっています。 このモニタは$0000〜$1500の領域があります。 ・―――――――――――――――――・ |■■コマンドの説明■■■■■■■■| ・―――――――――――――――――・ MONITOR TS−1000には次のようなモニタコマンドがあります。 ・―――――――――――――――――――――――――――・ |Dコマンド:メモリの内容を表示(プリンタ出力も可)  | |Jコマンド:任意のアドレスにコントロールを移す。   | |      プログラムの実行。            | |Sコマンド:メモリ内容をカセットにセーブする。    | |Lコマンド:メモリにカセットからロードする。     | |Vコマンド:カセットテープとメモリ内容を比較する。  | ・―――――――――――――――――――――――――――・ Dコマンド実行後のダンプはそのままスクリーン・エディットで変更できます。 ★モニタ・コマンドの機能と使い方 (1)Dコマンド(D:memory Dump)  機能:指定するメモリ・アドレスから16進出力とASCII出力 を行ないます。  ・――――――――――――――――・  |例 *D1200[CR]         |  ・――――――――――――――――・  1200番地より、メモリ・ダンプします。[BREAK]でストップ。 (2)Sコマンド(S:Save)  機能:指定するメモリ・ブロックの内容をファイル・ネームを付けてカセットにセーブします。  ・――――――――――――――――・  |例 *S1200,1300,12A0,MON[CR]  |  ・――――――――――――――――・  この例は、$1200〜$1300のプログラムに  “MON”というファイル・ネームで  $12A0にオート・スタートするように、カセットにセーブします。 (3)Lコマンド(L:Load)  機能:指定したファイル名のファイルをメモリにロードします。  ・――――――――――――――――・  |例 *LMON[CR]          |  ・――――――――――――――――・  この例は、“MON”というファイルをサーチしてロードします。  ファイル名を省略すると、最初に見つかったファイルをロードします。 (4)Vコマンド(V:Verify)  機能:指定したファイル名のベリファイします。  ・――――――――――――――――・  |例 *VMON[CR]          |  ・――――――――――――――――・  この例は“MON”というファイルをサーチしてベリファイします。  ファイル名を省略すると最初に見つかったファイルをベリファイします。 (5)Jコマンド(J:Jump)  機能:指定したアドレスにコントロールを移します。  ・――――――――――――――――・  |例 *J1500[CR]         |  ・――――――――――――――――・  この例は$1500をCPUのプログラム・カウンタに与えます。  $1500〜に“WICS”があれば、“WICS”が起動しますし、  ユーザーのプログラムがあれば、それを実行することになります。 ※Dコマンドを実行させ、[BREAK]キー でコマンド待ちにした状態で、  スクリーン・エディットを使い、メモリ内容が変更できます。  このスクリーン・エディタは、ASCIIコード を入力することもできます。  スクリーン・エディタから抜けるとき、[BREAK]キー を押します。  ・――――――――――――――――・  |例 $8000 00"ABCD"0D[CR]    |  |  $8006 C3 0000[CR]      |  ・――――――――――――――――・  この例は$8000から、  $00、“A”、“B”、“C”、“D”、$0Dを書き、  $8006より$C3、$00、$00を、書きます。  このように、このスクリーン・エディタは、  メモリ書き込みコマンドの役も果します。 ・―――――――――――――――――・ |■コントロール・キー表■■■■■■| ・―――――――――――――――――・ MONITOR TS-1000では、[SFT LOCK]キーを コントロール・キーとして使っています。 コントロール・キーの入力は[SFT LOCK]を押したままで、 A〜Zのキーを入力します。 次に、コントロール・キーの内容を表にします。  コントロール・キー表 ・―――――――――――――――――――――――・ |コード|キー|  内 容 |コード|キー|  内 容 | |――+―+――――――+――+―+――――――| |00| | NUL |10|P| PRINTER ON | |01|A| ↓(DOWN) |11|Q| TAB10 | |02|B| ↑(UP) |12|R| BELL | |03|C| →(RIGHT)|13|S| SCROLL UP | |04|D| ←(LEFT) |14|T| SCROLL DOWN| |05|E| H(HOME) |15|U| TAKI ON | |06|F| C(CLR) |16|V| TAKI OFF | |07|G| DEL |17|W| CAP | |08|H| INST |18|X| | |09|I| LINECLR |19|Y| | |0A|J| ALLCLR |1A|Z| | |0B|K| WIDTH40 |1B| | BREAK | |0C|L| WIDTH80 |1C| | | |0D|M| CRLF |1D| | | |0E|N| CRLF2 |1E| | | |0F|O| PRINTER OFF|1F| | | ・―――――――――――――――――――――――・  コントロール・キー ・―――――――――――――――――――――――――――――――――――――・ |コード|キー| 内  容 |        説       明        | |――+―+――――――+―――――――――――――――――――――――――| |00| |NUL |何も行なわない。                 | |――+―+――――――+―――――――――――――――――――――――――| |01|A|↓(DOWN ) |カーソルを1行下へ移動させます。カーソルが最   | |  | | |下行にあれば、スクロール・アップします。     | |――+―+――――――+―――――――――――――――――――――――――| |02|B|↑(UP) |カーソルを1行上へ移動させます。カーソルが最   | |  | | |上行にあれば、何もしません。           | |――+―+――――――+―――――――――――――――――――――――――| |03|C|→(RIGHT) |カーソルを1桁右へ移動させます。カーソルが最   | |  | | |右桁にあれば、1行下の行の左にカーソルを     | |  | | |させます。                    | |――+―+――――――+―――――――――――――――――――――――――| |04|D|←(LEFT) |カーソルを1桁左へ移動させます。カーソルが最   | |  | | |左桁にあれば、1行上の行の最右桁にカーソルを   | |  | | |移動させます。                  | |――+―+――――――+―――――――――――――――――――――――――| |05|E|H(HOME) |カーソルをHOME位置に移助させます。        | |――+―+――――――+―――――――――――――――――――――――――| |06|F|C(CLR) |スクロール・ウィンドウ内部をクリアし、HOMEを実行します。  | |――+―+――――――+―――――――――――――――――――――――――| |07|G|DEL |カーソル位置以後の文字をすべて1桁左に移動さ   | |  | | |せ、カーソルも左へ移動させます。もし、カーソ   | |  | | |ルが最左桁にあれば、カーソルは移動しません。   | |――+―+――――――+―――――――――――――――――――――――――| |08|H|INST |カーソル以後の文字を1桁右に移動させ、カーソ   | |  | | |ル位置にスベースを書きます。           | |――+―+――――――+―――――――――――――――――――――――――| |09|I|LINE CLR |カーソル以後の文字1行分クリアします。      | |――+―+――――――+―――――――――――――――――――――――――| |0A|J|ALL CLR |スクロール・ウィンドウの有無に関係なく画面全   | |  | | |体を、クリアします。               | |――+―+――――――+―――――――――――――――――――――――――| |0B|K|WIDTH40 |40桁モードにします。クリアは行ないません。    | |――+―+――――――+―――――――――――――――――――――――――| |0C|L|WIDTH80 |80桁モードにします。クリアは行ないません。    | |――+―+――――――+―――――――――――――――――――――――――| |0D|M|CRLF |改行を行ないます。                | |――+―+――――――+―――――――――――――――――――――――――| |0E|N|CRLF2 |カーソルが最左桁以外にあれば、改行を行ないます。 | |――+―+――――――+―――――――――――――――――――――――――| |0F|O|PRINTEROFF |プリンタの出力を行なわないモードにします。    | |――+―+――――――+―――――――――――――――――――――――――| |10|P|PRINTER ON |プリンタの出力を行なうモードにします。      | |――+―+――――――+―――――――――――――――――――――――――| |11|Q|TAB10 |10桁のタブレーションを行ないます。        | |――+―+――――――+―――――――――――――――――――――――――| |12|R|BELL |ベルを鳴らします。                | |――+―+――――――+―――――――――――――――――――――――――| |13|S|SCROLL UP |スクロール・アップを行ないます。         | |――+―+――――――+―――――――――――――――――――――――――| |14|T|SCROLL DOWN |スクロール・ダウンします。            | | | | |このとき、滝登りモードであれば滝登りを行ないます。| |――+―+――――――+―――――――――――――――――――――――――| |15|U|TAKION |滝登りモードにします。              | |――+―+――――――+―――――――――――――――――――――――――| |16|V|TAKIOFF |滝登りモードを解除。               | |――+―+――――――+―――――――――――――――――――――――――| |17|W|CAP |英大文字、英小文字の切り換えを行ないます。    | ・―――――――――――――――――――――――――――――――――――――・ ・―――――――――――――――――・ |■モニタ・サブルーチン■■■■■■| ・―――――――――――――――――・ MONITOR TS−1000では 入出力などの最少限必要な機能は、 $0028番地をコールすることで すべて行なえるように設計されています。 $0028番地をコールするには RESTART(5)を行なうとよいわけです。 RESTART(5)はマシン語コードでは、$EFの1バイトです。 この1バイト$EFだけでは $0028〜のサブルーチンは何を行えばよいのか分かりません。 そこで$EFの後に1バイトの入出力の機器番号を書きます。 たとえば、$EF $00 であれば、1行入力を行ない、 $EF$06は1行出力を行なうと決めておけば、 ユーザーはモニタのアドレスを覚える必要がありません。 $EFの後の1バイトの機器番号さえ覚えておけば、 マシン語でもBASEでも容易にプログラムができるわけです。 次に、機器番号と名称表を示します。  機器番号と名称表 ・―――――――――――――――――――――――――――――・ |00| GETLN |14| MUSIC |28| CURHL | |01| CRTOUT |15| TIMESET |29| A=[HL] | |02| PUTCHR2 |16| TIMERD |2A| [HL]=A | |03| PUTCHR |17| BELL |2B| FILELOAD | |04| PUTLN |18| TEMPO |2C| FILEPR | |05| PUTLN2 |19| PRHL |2D| WINDOWSET | |06| PUTLINE |1A| PRA |2E| BACKSEARCH | |07| CRLF |1B| RDHEX4 |2F|−・ | |08| CRLF2 |1C| RDHEX2 |30| | | |09| SPACE |1D| MOTOR |31| | | |0A| GETCH |1E| MSTOP |32| | | |OB| getch |1F| COPEN |33| | | |0C| INKEY |20| SEARCH SPACE |34| | | |OD| BREAK |21| FF |35| |ユーザー用 | |OE| FSAVE |22| REW |36| | | |0F| PSAVE |23| PR#P |37| | | |10| FLOAD |24| PR#2 |38| | | |11| PLOAD |25| SAME |39| | | |12| VERIFY |26| 2PRC |3A| | | |13| SOUND |27| 2PR |3B|−・ | ・―――――――――――――――――――――――――――――・ これらのモニタ・サブルーチンをコールして、 次のプログラムを書いてみましょう。 ・―――――――――――――――――――――――――――――・ |                             | | ・→INKEY(リアル・タイム・キー入力)を行ない、  | | | これを画面に出力します。[BREAK] キーが押されたら  | | | キーが押されたモニタヘ戻る。            | | ・−繰り返し                      | |    $8000にプログラムします。          | |                             | | 8000 EF0C LOOP 'INKEY;リアル・タイム・キー入力          | | 8002 EF01 'CRT OUT;CRT出力            | | 8004 EF0D 'BREAK ;[BREAK]キー・チェック      | | 8006 CAF000 'IF Z GOTO MONITOR            | | 8009 C30080 GOTO LOOP                | ・―――――――――――――――――――――――――――――・ このように表を見て、ハンド・アセンブルしただけでも、 ある程度のものをプログラムできます。 メモリ・ダンプやプリンタのビット・イメージ・プリントまたは、 TOSなどもこれらのサブルーチンを使って作れます。 次に各サブルーチンの内容を示します。 ・―――――――――――――――――――――――――――――――――――――・ |機器| サブルーチン名 |        サブルーチンの内容          | |番号| |                           | |――+――――――+―――――――――――――――――――――――――――| |00|GETLN |キーボードから1行のデータ入力を行ないます。行バッファは、 | |  | |DEレジスタで指定します。バッファは160バイト必要です。 | |  | |TS-1000では$1380を使用しています。 | |  | |[BREAK]キーが押されたら、行バッファの先頭に$1Bが | |  | |ストアされます。DEレジスタは$D000〜$FFFFに | |  | |あってはいけません。 | |――+――――――+―――――――――――――――――――――――――――| |01|CRTOUT |Accの内容を画面に出力します。 | |  |      |Accの内容が$00〜$16のときは | |  |      |コントロール・コードになっているので、 | |  | |それぞれのコントロールが行なわれます。たとえば、 | |  | |Accこの内容が$06(C)であればクリアを実行します。 | |――+――――――+―――――――――――――――――――――――――――| |02|PUTCHR2 |Accの内容を出力装置に出力します。出力装置は$0036 | |  | |番地の値により、次の出力装置が指定されます。 | |  | | 00:CRT | |  | | 01:PRINTER | |  | | 02:PRINTER & CRT | |  | |となっています。CRT出力はコントロールを行なわず、 | |  | |キャラクタを出力します。たとえば、Accが$01であれば、 | |  | |画面に[↓]のキャラクタが出力されます。 | |――+――――――+―――――――――――――――――――――――――――| |03|PUTCHR |Accの内容を出力装置に出力します。出力装置は | |  | |PUTCHR2と同じです。ただし、CRT出力はコントロール・ | |  | |コードがあればコントロールを行ないます(CRTOUTと同様)。 | |――+――――――+―――――――――――――――――――――――――――| |04|PUTLN |DEレジスタの指すアドレスから始まるASCIIコード | |  | |列を続けて画面に出力します。データのエンド・マークは | |  | |$0D(キャリッジ・リターン)です。 | |  | |ただし、キャリッジ・リターンは行ないません。 | |  | |コントロール・コードは実行されます。 | |――+――――――+―――――――――――――――――――――――――――| |05|PUTLN2 |DEレジスタの指すアドレスから始まるASCIIコード列を | |  | |続けて出力装置に出力します(PUTCHR2参照)。 | |  | |CRT出力はコントロールを行なわず、キャラクタを | |  | |出力します。エンド・マークは$0DでPUTLNと同様です。 | |――+――――――+―――――――――――――――――――――――――――| |06|PUTLINE |PUTLN2と同様ですが、コントロール・コードはコントロールを実行します。 | |――+――――――+―――――――――――――――――――――――――――| |07|CRLF |改行を出力装置に出力します。 | |――+――――――+―――――――――――――――――――――――――――| |08|CRLF2 |改行をCRTのみに出力します。このときカーソルが | |  | |最左桁にあれば、改行は行なわれません。 | |――+――――――+―――――――――――――――――――――――――――| |09|SPACE |スペースを出力装置に出力します。 | |――+――――――+―――――――――――――――――――――――――――| |0A|GETCH |キーボードより1文字キー入力を行ない、そのASCII | |  | |コードをAccに入れます。このときカーソルを点滅さ | |  | |せます(リピートなし)。 | |――+――――――+―――――――――――――――――――――――――――| |0B|getch |キーボードより1文字キー入力を行ない、そのASCII | |  | |コードをAccに入れます。このときカーソルを点滅さ | |  | |せます(リピートあり)。 | |――+――――――+―――――――――――――――――――――――――――| |0C|INKEY |リアル・タイム・キー入力を行ない、そのASCIIコードを | |  | |Accに入れます。 | |――+――――――+―――――――――――――――――――――――――――| |0D|BREAK |[BREAK]キーが押されているか、チェックします。 | |  | |Zフラグ←0:押されていない。 | |  | |Zフラグ←1:押されている。 | |――+――――――+―――――――――――――――――――――――――――| |0E|FSAVE |FILE DATAブロックをカセットにセーブします。 | |  | |FILE DATAの仕様 | |  | | $1300    :ファイルタイプ :FILE | |  | | $1301〜$1310:ファイルネーム :FILE NAME | |  | | $1311    :$0D   :FILECR | |  | | $1312〜$1313:長さ   :LENGT | |  | | $1314〜$1315:先頭アドレス:START | |  | | $1316〜$1317:実行アドレス:EXT | |  | | $1318〜$137F:未使用 | |  | |このエリアをカセットにセーブします。これらのデータは | |  | |PLOAD、PSAVEで使用されます。 | |――+――――――+―――――――――――――――――――――――――――| |0F|PSAVE |FILE DATAブロックの内容に従い、プログラムおよび | |  | |データをカセットにセーブします。 | |――+――――――+―――――――――――――――――――――――――――| |10|FLOAD |FILE DATAブロックにカセットからロードします。 | |  | |これはFSAVEにより、作られたものに限られます | |  | |(PSAVEのファイルはロードしません)。 | |――+――――――+―――――――――――――――――――――――――――| |11|PLOAD |FILE DATAブロックの内容に従い、プログラムおよび | |  | |データをカセットからロードします(PSAVEのファイルのみ)。 | |――+――――――+―――――――――――――――――――――――――――| |12|VERIFY |FILE DATAブロックの内容に従い、メモリ上のデータと | |  | |とカセット上のデータを比較します。 | |  | |CYフラグ←1:一致しなかった。 | |  | |CYフラグ←0:一致した。 | |――+――――――+―――――――――――――――――――――――――――| |13|SOUND |BCレジスタを音長、HLレジスタを音程と見なして | |  | |音を出力します。 | |――+――――――+―――――――――――――――――――――――――――| |14|MUSIC |DEレジスタの指すアドレスよりはじまる音楽データ | |  | |を演奏します。音楽データは"BASIC LANGUAGE MANUAL"の | |  |      |MUSICステートメントに解説してある | |  | |データと同様です。エンド・マークは$0Dか、$2A:"*" | |  | |でなければなりません。 | |――+――――――+―――――――――――――――――――――――――――| |15|TIMESET |内蔵時計に時刻をセットします。 | |  | | Aレジスタ←0:AM | |  | | 1:PM | |  | |DEレジスタ←秒単位の時間(2バイト・データ) | |  | |がセットされます。 | |――+――――――+―――――――――――――――――――――――――――| |16|TIMERD |内蔵時計の現在の時刻を読み取ります。 | |  | | Aレジスタ←0:AM | |  | | 1:PM | |  | |DEレジスタ←秒単位の時間(2バイト・データ) | |  | |がセットされます。 | |――+――――――+―――――――――――――――――――――――――――| |17|BELL |ベルを鳴らします。 | |――+――――――+―――――――――――――――――――――――――――| |18|TEMPO |MUSICサブルーチンの演奏するテンポを設定します。 | |  | |Accにテンポ・データを入れておきます。 | |――+――――――+―――――――――――――――――――――――――――| |19|PRHL |HLレジスタの値を16進数で出力装置に出力します。 | |――+――――――+―――――――――――――――――――――――――――| |1A|PRA |Aレジスタの値を16進数で出力装置に出力します。 | |――+――――――+―――――――――――――――――――――――――――| |1B|RDHEX4 |連続した4バイトのデータが4桁の16進数を表現する | |  | |ASCIIコード列であれば、その16進数をHLレジスタ | |  | |にセットします。 | |  | |DEレジスタ←連続した4バイト・データの先頭アドレス。 | |  | |リターン時にDEは、4増加されています。 | |  | |CYフラグが1であれば、データ・エラーが発生し | |  | |たことになります。 | |――+――――――+―――――――――――――――――――――――――――| |1C|RDHEX2 |連続した2バイトのデータが2桁の16進数を表現する、 | |  | |ASCIIコード列であれば、その16進数をAレジスタに | |  | |セットします。 | |  | | DEレジスタ←連続した2バイト・データの先頭アドレス。 | |  | |   リターン時にDEは、2増加されています。 | |  | | CYフラグが1であればデータ・エラーが発生した | |  | | ことになります。 | |――+――――――+―――――――――――――――――――――――――――| |1D|MOTOR |カセットのモータを回します。Dレジスタの内容により | |  | |次の動作をします。 | |  | | $01または$02:WRITE | |  | | $04または$08:READ | |――+――――――+―――――――――――――――――――――――――――| |1E|MSTOP |カセットのモータを止めます。 | |――+――――――+―――――――――――――――――――――――――――| |1F|COPEN |カセットのフタを開けます。 | |――+――――――+―――――――――――――――――――――――――――| |20|SEARCH |カセットテープのデータの区切り(スペース)までテープを | |  |SPACE |進めます。 | |――+――――――+―――――――――――――――――――――――――――| |21|FF |カセットの早送りをします。 | |――+――――――+―――――――――――――――――――――――――――| |22|REW |カセットの巻戻しを行ないます。 | |――+――――――+―――――――――――――――――――――――――――| |23|PR#P |AレジスタのASCIIコードをプリンタに出力します。 | |  | |$0Dは$0Aに変換されて出力されます。 | |――+――――――+―――――――――――――――――――――――――――| |24|PR#2 |Aレジスタの値をそのままプリンタに出力します。 | |  | |ビット・イメージ・プリントのときに使用できます。 | |――+――――――+―――――――――――――――――――――――――――| |25|SAME |DEレジスタのデータとHLレジスタのデータをB個 | |  | |分比較します。 | |  | | Zフラグ←1:一致した。 | |  | | Zフラグ←0:一致しなかった。 | |――+――――――+―――――――――――――――――――――――――――| |26|ZPRC |CRLF2を実行し、この命令の書かれている次のアドレス | |  | |より、$00までのデータをCRTに出力します。 | |  | | [例 EF46 41 42 43 00] | |  | |これは、“ABC”を出力します。 | |  | |$00のデータの次のアドレスにリターンしてきます。 | |  | |※エラー表示などに使います。 | |――+――――――+―――――――――――――――――――――――――――| |27|ZPR |この命令の書かれている次のアドレスより、 | |  | |$00までのデータを出力装置に出力します。 | |  | | [例 EF27 45 4F 44 00] | |  | |これは、“END”をプリンタなどに出力します。 | |  | |$00のデータの次のアドレスヘリターンしてきます。 | |  | |PRINT文のように使用できます。 | |――+――――――+―――――――――――――――――――――――――――| |28|CURHL |現在のカーソル位置をHLレジスタにセットします。 | |  | |$D000〜$D7CFが値となります。  | |――+――――――+―――――――――――――――――――――――――――| |29|A=[HL] |AレジスタにHLの指すメモリの内容をセットします。 | |  | |このとき、HLレジスタが$D000〜$FFFFであれば、 | |  | |VRAMの内容になります。                | |――+――――――+―――――――――――――――――――――――――――| |2A|[HL]=A |A=[HL]の逆動作をします。               | |――+――――――+―――――――――――――――――――――――――――| |2B|FILELOAD |DEレジスタにファイル・ネームの先頭アドレスをセットして、 | |  | |コールすると、そのファイル・ネームを探して | |  | |リターンします。 | |  | |DEレジスタの先頭が$0Dであれば,先頭のファイルを | |  | |見つけるとリターンします。DEレジスタは$1300 | |  | |〜$1380の間にあってはいけません。 | |――+――――――+―――――――――――――――――――――――――――| |2C|FILEPR |ファイル・ネームをCRTに出力します。 | |――+――――――+―――――――――――――――――――――――――――| |2D|WINDOWSET |$000Bにスクロール開始行。 | |  | |$000Cにスクロール終了行+1をセットして、 | |  | |このサブルーチンをコールするとスクロール・ウィンドウが | |  | |セットされます。 | |――+――――――+―――――――――――――――――――――――――――| |2E|BACK SEARCH |カセットを巻戻しながら、スペース・サーチを行ないます。 | |――+――――――+―――――――――――――――――――――――――――| |30|      |ユーザーが定義できます。 | || |      | | |3F|      | | ・―――――――――――――――――――――――――――――――――――――・ 次に、主なワーク・エリアを示します。  主なワーク・エリア ・――――――――――――――――――――――――――――――――・ |0003     |カーソルX                 | |0004     |カーソルY                 | |000B     |ウィンドウ先頭行              | |000C     |ウィンドウ最柊行+1            | |000D、E   |スクロール長                | |0013     |1行の桁数−1               | |0027     |滝登りフラグ                | |0036     |出力機器番号                | |128C〜12FF|スタック・エリア              | |1300〜137F|FILE DATAブロック FSAVE参照 | |1380〜141F|行入力バッファ               | |1430〜145F|第2スタック・エリア            | |1460〜14FF|ファンクション・キーDATA        | |――――――――――――――――――――――――――――――――| |        MONITORのスタート・アドレス       | |        COLDスタート $0000          | |        HOTスタート  $00F0          | ・――――――――――――――――――――――――――――――――・ ・―――――――――――――――――・ |■モニタの入力方法■■■■■■■■| ・―――――――――――――――――・ BASICのモニタを使って、$8000番地〜に入力します。 これを、Sコマンドでセーブし、IPLからロードすると、 このモニタが走ります。       ・――――――・       |■終わりに■|       ・――――――・ 次回はWICS 80Bのインタープリタを発表します。 その前に、このモニタを完全にデバッグしておいてください。 このモニタがデバッグされていなければ、WICS 80Bは動作しないので!